package com.frx.datastruct.chapterfive;

/**
 * @author ：frx
 * @date ：Created in 2019/2/19 21:57
 * @description： LeetCode 删除链表中给定值val的所有元素
 *               Input : 1-->2-->6-->3-->4-->6-->5-->6
 *               Output: 1-->2-->3-->4-->5
 *               public class ListNode{
 *                   int val;
 *                   ListNode next;
 *                   ListNode(int x) {
 *                       var = x;
 *                   }
 *               }
 * @modified By：
 * @version: ToDO
 */
public class Solution {

    public ListNode removeElements(ListNode head,int val){

        // 没有设置虚拟头节点的情况进行删除 因为有可能删掉一个节点之后其后面的节点也是空节点，所以要用while循环
        while(head !=null && head.val == val){
            ListNode delNode = head;
            head = head.next;
            delNode.next = null;
        }

        if(head == null){
            return null;
        }

        ListNode prev = head;
        while(prev.next !=null ){

            if (prev.next.val == val){
                ListNode delNode = prev.next;
                prev.next = delNode.next;
                delNode.next = null;
            } else {
                prev = prev.next;
            }
        }
        return head;
    }
}
